package uniquindio.facing.ingesis.moviles.undroiq.activity;

import java.util.Map;

import uniquindio.facing.ingesis.moviles.undroiq.contantes.ConstantesGenerales;
import uniquindio.facing.ingesis.moviles.undroiq.entidades.Actividad;
import uniquindio.facing.ingesis.moviles.undroiq.entidades.Noticia;
import uniquindio.facing.ingesis.moviles.undroiq.entidades.Venta;
import uniquindio.facing.ingesis.moviles.undroiq.utilitarios.Contenido;
import uniquindio.facing.ingesis.moviles.undroiq.view.ActividadView;
import uniquindio.facing.ingesis.moviles.undroiq.view.NoticiaView;
import uniquindio.facing.ingesis.moviles.undroiq.view.VentaView;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;

public class PestanasActivity extends Activity {

	private Resources res;

	private TabHost tabs;

	private TabHost.TabSpec spec;

	private ListView noticiasList;

	private ListView actividadList;

	private ListView ventaList;

	private UtilContenido contenido;

	private Contenido contenedor;

	private Map<String, Noticia> mapNoticias;
	private Map<String, Actividad> mapActividades;
	private Map<String, Venta> mapVentas;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_pestanas);

		res = getResources();

		tabs=(TabHost)findViewById(android.R.id.tabhost);
		tabs.setup();

		contenido = new UtilContenido();

		contenedor = new Contenido(contenido);

		crearPestanias();

		mapNoticias = contenedor.capturarInformacionNoticias();

		crearContenidoPestanaNoticias(mapNoticias);

		mapActividades = contenedor.capturarInformacionActividades();

		crearContenidoPestanaActividades(mapActividades);

		mapVentas = contenedor.capturarInformacionVentas();

		crearContenidoPestanaVentas(mapVentas);


	}

	/** 
	 * M�todo encargado de iniciar la actividad venta con el fin de publicar una venta.
	 * 
	 * @param view
	 */
	public void onClickLinkToVenta(View view) {

		Log.i(ConstantesGenerales.UNDROIQ, ConstantesGenerales.LINK_VENTA);

		Intent i = new Intent(PestanasActivity.this, VentaActivity.class);
		startActivity(i);

	}
	
	public void onClickLinkToLoginActivity(View view) {

		Log.i(ConstantesGenerales.UNDROIQ, ConstantesGenerales.LINK_VENTA);

		Intent i = new Intent(PestanasActivity.this, LoginActiviy.class);
		startActivity(i);

	}
	
	

	/**
	 * M�todo encargado de crear la pesta�as de la aplicaci�n.
	 */
	public void crearPestanias() {


		spec=tabs.newTabSpec("mitab2");
		spec.setContent(R.id.proyecto_tab2);
		spec.setIndicator("", 
				res.getDrawable(R.drawable.ic_noticias));
		tabs.addTab(spec);

		spec=tabs.newTabSpec("mitab3");
		spec.setContent(R.id.proyecto_tab3);
		spec.setIndicator("", 
				res.getDrawable(R.drawable.ic_actividades));
		tabs.addTab(spec);

		spec=tabs.newTabSpec("mitab4");
		spec.setContent(R.id.proyecto_tab4);
		spec.setIndicator("", 
				res.getDrawable(R.drawable.ic_sevende));
		tabs.addTab(spec);

		spec=tabs.newTabSpec("mitab5");
		spec.setContent(R.id.proyecto_tab5);
		spec.setIndicator("", 
				res.getDrawable(android.R.drawable.ic_menu_compass));
		tabs.addTab(spec);

		tabs.setCurrentTab(0);

		tabs.setOnTabChangedListener(new OnTabChangeListener() {
			public void onTabChanged(String tabId) {
				Log.i("AndroidTabsDemo", "Pulsada pesta�a: " + tabId);
			}
		});
	}

	/**
	 * M�todo encargado de capturar y enviar al ListView la informacion de la noticias.
	 * 
	 * @param mapNoticias
	 */
	public void crearContenidoPestanaNoticias(Map<String, Noticia> mapNoticias) {

		if (mapNoticias!=null) {

			final String[] titulosNoticias = new String[mapNoticias.size()];
			final String[] descripcionesNoticias = new String[mapNoticias.size()];

			
			int i = 0;
			for (String id : mapNoticias.keySet()) {
				titulosNoticias[i] = mapNoticias.get(id).getTitulo();
				descripcionesNoticias[i] = mapNoticias.get(id).getDescripcion();
				i++;
			}

			noticiasList = (ListView) findViewById(R.id.proyecto_listView_tab2);
			noticiasList.setAdapter(new BaseAdapter() {

				private Context context = getApplicationContext();

				public View getView(int position, View convertView, ViewGroup parent) {

					NoticiaView noticiaView;
					if (convertView == null) {
						noticiaView = new NoticiaView(context, titulosNoticias[position], descripcionesNoticias[position]);
					} else {
						noticiaView = (NoticiaView) convertView;
						noticiaView.setTitulo(titulosNoticias[position]);
						noticiaView.setDescripcion(descripcionesNoticias[position]);
					}

					return noticiaView;
				}
				public long getItemId(int position) {
					return position;
				}
				public Object getItem(int position) {
					return position;
				}
				public int getCount() {
					return titulosNoticias.length;
				}
			});
		}
	}

	/**
	 * M�todo encargado de capturar y enviar al ListView la informacion de las actividades.
	 * 
	 * @param mapActividades
	 */
	public void crearContenidoPestanaActividades(Map<String, Actividad> mapActividades) {

		if (mapActividades!=null) {
			final String[] titulosActividades= new String[mapActividades.size()];
			final String[] descripcionesActividades= new String[mapActividades.size()];
			final String[] horas= new String[mapActividades.size()];
			final String[] lugares= new String[mapActividades.size()];


			int i = 0;
			for (String id : mapActividades.keySet()) {
				titulosActividades[i] = mapActividades.get(id).getTitulo();
				descripcionesActividades[i] = mapActividades.get(id).getDescripcion();
				horas[i] = mapActividades.get(id).getHora();
				lugares[i] = mapActividades.get(id).getLugar();
				i++;
			}
			
			
			actividadList = (ListView) findViewById(R.id.proyecto_listView_tab3);
			actividadList.setAdapter(new BaseAdapter() {

				private Context context = getApplicationContext();

				public View getView(int position, View convertView, ViewGroup parent) {

					ActividadView actividadView;
					if (convertView == null) {
						actividadView = new ActividadView(context, titulosActividades[position], descripcionesActividades[position], horas[position], lugares[position]);
					} else {					
						
						actividadView = (ActividadView) convertView;
						actividadView.setTitulo(titulosActividades[position]);
						actividadView.setDescripcion(descripcionesActividades[position]);
						actividadView.setHora(horas[position]);
						actividadView.setLugar(lugares[position]);

					}

					return actividadView;
				}
				public long getItemId(int position) {
					return position;
				}
				public Object getItem(int position) {
					return position;
				}
				public int getCount() {
					return titulosActividades.length;
				}
			});
		}
	}

	

	/**
	 * M�todo encargado de capturar y enviar al ListView la informacion de las ventas. 
	 * 
	 * @param mapVentas
	 */
	public void crearContenidoPestanaVentas(Map<String, Venta> mapVentas) {

		final String[] titulosVentas= new String[mapVentas.size()];
		final String[] descripcionesVentas= new String[mapVentas.size()];
		final String[] precios= new String[mapVentas.size()];
		final String[] telefonos= new String[mapVentas.size()];
		final String[] correos= new String[mapVentas.size()];

		int i = 0;
		for (String id : mapVentas.keySet()) {
			titulosVentas[i] = mapVentas.get(id).getTitulo();
			descripcionesVentas[i] = mapVentas.get(id).getDescripcion();
			precios[i] = mapVentas.get(id).getPrecio();
			telefonos[i] = mapVentas.get(id).getTelefono();
			correos[i] = mapVentas.get(id).getCorreo();

			i++;
		}


		ventaList = (ListView) findViewById(R.id.proyecto_listView_tab4);
		ventaList.setAdapter(new BaseAdapter() {

			private Context context = getApplicationContext();

			public View getView(int position, View convertView, ViewGroup parent) {

				VentaView ventaView;
				if (convertView == null) {
					ventaView = new VentaView(context, titulosVentas[position], descripcionesVentas[position],precios[position],telefonos[position],correos[position]);
				} else {
					ventaView = (VentaView) convertView;
					ventaView.setTitulo(titulosVentas[position]);
					ventaView.setDescripcion(descripcionesVentas[position]);
					ventaView.setPrecio(precios[position]);
					ventaView.setTelefono(telefonos[position]);
					ventaView.setCorreo(correos[position]);


				}

				return ventaView;
			}
			public long getItemId(int position) {
				return position;
			}
			public Object getItem(int position) {
				return position;
			}
			public int getCount() {
				return titulosVentas.length;
			}
		});
	}

	
}